<?php
App::uses('Sanitize', 'Utility');
App::uses('CakeEmail', 'Network/Email');
class CustomersController extends AppController {
	var $uses = array('Customer','City');
	var $components = array('Password','Recaptcha.Recaptcha');
	var $helpers = array('Recaptcha.Recaptcha');
	
	public function beforeFilter() {
        parent::beforeFilter();
		$this->Auth->allow('register','forgot_password','logout');
    }
	
	public function login() {		
		$this->Customer->validator()->add('password',array(
			'notEmpty' => array(
				'rule'=>'notEmpty',
				'required'=>true,
				'message'=>'Phải điền mật khẩu để đăng nhập',
			),
		));
		if ($this->request->is('post')) {
			if ($this->request->is('post')) {
				if ($this->Recaptcha->verify()) {
					if ($this->Auth->login()) {
						$this->redirect($this->Auth->redirect());
					} else {			
						$this->Session->setFlash(__('Sai tên đăng nhập hoặc mật khẩu, xin vui lòng thử lại'));
					}
				} else {					
					$this->Session->setFlash('Sai mã xác nhận, xin vui lòng nhập lại');
				}				
			}
		}
	}

	public function logout() {
		$this->redirect($this->Auth->logout());
	}
	
	public function forgot_password(){
		if($this->request->is('post')){
			$email = Sanitize::escape($this->data['email']);
			$data = $this->Customer->find('first',array(
				'conditions'=>array(
					'email'=>$email,
				),
			));
			if($data){
				$new_password = $this->Password->generatePassword(8);
				$data['Customer']['password'] = $new_password;
				$this->Customer->save($data);
				
				$Email = new CakeEmail('default');
				$Email->from(array('vthuytrang2000@gmail.com' => 'Shop Minh Thư'));
				$Email->to($data['Customer']['email']);
				$Email->subject('Gửi bạn thông tin mật khẩu');
				$Email->sendAs = 'text';
				$Email->send('Mật khẩu mới:'.$new_password);
				
				$this->Session->setFlash('Mật khẩu mới đã gửi đến email bạn cung cấp');				
			}
			else {
				$this->Session->setFlash('Email chưa được đăng ký');
			}
			$this->redirect('forgot_password');
		}		
	}
	
	public function change_password(){		
		if($this->request->is('post')){
			if(!empty($this->data['Customer']['password'])){
				$password = Sanitize::escape($this->data['Customer']['password']);
			}
			else {
				$this->Customer->invalidate("password",'Mật khẩu bắt buộc nhập');
			}
			
			if(!empty($this->data['Customer']['passwordconf'])){
				$passwordconf = Sanitize::escape($this->data['Customer']['passwordconf']);
			}
			else {
				$this->Customer->invalidate("passwordconf",'Mật khẩu bắt buộc nhập');
			}
			
			if(!empty($this->data['Customer']['password']) && !empty($this->data['Customer']['passwordconf']) 
			&& $this->data['Customer']['password']!=$this->data['Customer']['passwordconf']) {
				$this->Customer->invalidate("passwordconf",'Mật khẩu và xác nhận mật khẩu không giống nhau.Xin vui lòng nhập lại');
			}
				
			$errors = $this->Customer->invalidFields();
			if(count($errors)==0){
				$user = $this->Session->read('Auth.user');
				$this->Customer->save(array('customer_id'=>$user['Customer']['customer_id'],'password'=>$password));
				$this->Session->setFlash('Mật khẩu đã được thay đổi.');
				$this->redirect('change_password');
			}
			$this->set(compact('errors'));
		}
	}
	
	public function register() {
        if ($this->request->is('post')) {
			if ($this->Recaptcha->verify()) {
				$this->Customer->create();
				if ($this->Customer->save($this->request->data,true)) {
					$this->Session->setFlash(__('Chức mừng bạn đã đăng ký thành công'));
					
					$Email = new CakeEmail('default');					
					$Email->to($data['Customer']['email']);
					$Email->subject('Bạn đã đăng ký tài khoản ở Shop Minh Thư');
					$Email->sendAs = 'text';
					$Email->send('Hệ thống email đang xây dựng');
					
					$this->redirect(array('action' => '.'));
				} else {
					$this->Session->setFlash(__('Có lỗi, không lưu được, xin thử lại'));
				}
			}
			else {					
				$this->Session->setFlash('Sai mã xác nhận, xin vui lòng nhập lại');
			}
        }
		$cities = $this->City->find('list',array('fields'=>array('id','name'),'order'=>'orderby asc'));
		$this->set(compact('cities'));
    }
	
	public function order_history(){

	}
	
    public function index() {
	
    }
}
